package com.popay.common.utils;

import java.math.BigDecimal;

/**
 * 运算工具
 *
 * @author li songyin
 * @version 1.0.0
 * @package com.popay.common.utils
 * @className BigDecimalUtil
 * @date 2021-01-13
 */
public class BigDecimalUtil {
    private BigDecimalUtil(){}

    /**
     * 加
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal add(double v1,double v2) {
        BigDecimal b1 = new BigDecimal(String.valueOf(v1));
        BigDecimal b2 = new BigDecimal(String.valueOf(v2));
        return b1.add(b2);
    }

    /**
     * 减
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal sub(double v1,double v2) {
        BigDecimal b1 = new BigDecimal(String.valueOf(v1));
        BigDecimal b2 = new BigDecimal(String.valueOf(v2));
        return b1.subtract(b2);
    }

    /**
     * 乘
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal mul(double v1,double v2) {
        BigDecimal b1 = new BigDecimal(String.valueOf(v1));
        BigDecimal b2 = new BigDecimal(String.valueOf(v2));
        return b1.multiply(b2);
    }

    /**
     * 除
     * @param v1
     * @param v2
     * @param scale 保留小树位
     * @return
     */
    public static BigDecimal div(double v1,double v2, int scale) {
        if (v2 == 0) {
            return new BigDecimal("0");
        }
        BigDecimal b1 = new BigDecimal(String.valueOf(v1));
        BigDecimal b2 = new BigDecimal(String.valueOf(v2));
        // ROUND_HALF_UP = 四舍五入
        return b1.divide(b2,scale, BigDecimal.ROUND_HALF_UP);
    }

    public static BigDecimal div(int v1,int v2, int scale) {
        if (v2 == 0) {
            return new BigDecimal("0");
        }
        BigDecimal b1 = new BigDecimal(String.valueOf(v1));
        BigDecimal b2 = new BigDecimal(String.valueOf(v2));
        // ROUND_HALF_UP = 四舍五入
        return b1.divide(b2,scale, BigDecimal.ROUND_HALF_UP);
    }
}
